import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 打开文件
data = pd.read_csv('DATA_without_NAN.csv')# 相关系数判断自变量间的线性相关性，因此未使用替换了非零值的文件
columns_name = data.columns.values

# 相关性分析(皮尔森相关系数)
# 由于皮尔森相关系数只能反映线性相关程度，且离群点对相关系数影响很大，需结合散点图进行分析
def mainVariables():
    X = data['TUKI_DATA']
    Y = data['LUKU_DATA']
    # 173个自变量和TUKI_DATA/LUKU_DATA间的相关系数
    for i in range(2, data.shape[1]):
        Z = data[columns_name[i]]
        result1 = np.corrcoef(X, Z)
        result2 = np.corrcoef(Y, Z)
        print('%s和TUKI_DATA的相关系数为：' % columns_name[i])
        print(result1)
        print('%s和LUKU_DATA的相关系数为：' % columns_name[i])
        print(result2)

#绘制散点图
def scatterChart():
    for i in range(2, data.shape[1]):
        area = np.pi * 2.5 ** 2
        #以自变量为x轴，TUKI_DATA为y轴作图
        plt.scatter(x=data[columns_name[i]], y=data['TUKI_DATA'], s = area, alpha=0.7)
        plt.xlabel(xlabel=columns_name[i])
        # 以自变量为x轴，LUKU_DATA为y轴作图
        plt.scatter(x=data[columns_name[i]], y=data['LUKU_DATA'], s = area, alpha=0.7)
        plt.xlabel(xlabel=columns_name[i])
        plt.ylabel(ylabel='TUKI_DATA:blue LUKU_DATA:orange')
        #显示图片
        plt.show()

#对将TUKI_DATA和LUKU_DATA >0 的值替换为1后得到的表数据.csv，也进行绘图，分析相关性
def scatterChart2():
    #打开数据.csv
    data2 = pd.read_csv('数据.csv')
    for i in range(2, data2.shape[1]):
        area = np.pi * 2.5 ** 2
        #以自变量为x轴，TUKI_DATA为y轴作图
        plt.scatter(x=data2[columns_name[i]], y=data2['TUKI_DATA'], s = area, alpha=0.7)
        plt.xlabel(xlabel=columns_name[i])
        # 以自变量为x轴，LUKU_DATA为y轴作图
        plt.scatter(x=data2[columns_name[i]], y=data2['LUKU_DATA'], s = area, alpha=0.7)
        plt.xlabel(xlabel=columns_name[i])
        plt.ylabel(ylabel='TUKI_DATA/LUKU_DATA')
        #显示图片
        plt.show()

#分析后取相关性大的自变量，保存在新表中
def saveNewExcel():
    data_cluster = data[['desmod_x', 'KAYT_TULO_DATA', 'KAYT_RAHATULO_DATA', 'KAYT_TULO_MALLI', 'KAYT_RAHATULO_MALLI',
                         'MALLI_BRUTTO_VERONAL', 'TULONS_VERONAL_DATA', 'TULONS_VERONAL_MALLI', 'ASUMTUKI_DATA_x',
                         'ASUMTUKI_MALLI', 'ASUNTOTULO', 'LAPSIP_DATA', 'LAPSIP_MALLI', 'TOIMTUKI_MALLI',
                         'EI_MALL_REKONSTR', 'desmod_y.3', 'TUKI_MALLI', 'LUKU_MALLI']]
    data_cluster.to_csv('筛选后自变量.csv')



if __name__ == '__main__':
    mainVariables()
    saveNewExcel()
    scatterChart()
    #scatterChart2()



